import { Controller } from 'egg';
import {Op} from 'sequelize';
export default class AboutController extends Controller {
    
    //关于我们展示类型接口
    //1.公司介绍
    //2.荣誉资质
    //3.人才计划
    //4.公司新闻
    //5.企业合作
    //6.技术支持
    //7.联系我们
    /**
     * @api {get} /about/cate_list 关于我们列表
     * @apiName aboutCateList
     * @apiGroup Gaode
     * @apiVersion 1.0.0
     * @apiDescription 关于我们列表
     * @apiSuccess {Number} code 返回状态码 0失败  200成功
     * @apiSuccess {String} message 返回状态对应提示消息
     * @apiSuccess {Object} data 查询返回结构
     * @apiSuccess {Object[]} data 查询数组集合
     * @apiSuccess {String} data.about_img 关于我们的图片路径
     * @apiSuccess {String} data.about_id 关于我们ID
     * @apiSuccess {String} data.about_name 关于我们名称
     * @apiSuccess {String} data.about_vedio 关于我们视频介绍(可为无)
     * @apiSuccess {String} data.name 公司名称(可为无)
     * @apiSuccess {String} data.qrcode 二维码地址(可为无)
     * @apiSuccess {String} data.record 备案(可为无)
     * @apiSuccess {String} data.email 邮箱(可为无)
     * @apiSuccess {String} data.address 地址(可为无)
     * @apiSuccess {String} data.phone 电话(可为无)
     */
    /**
     * 查询about表分别放入数组中
     */
    async cate_list(){
        
        const {ctx,app}=this;
        const {About} =app.model;
        try {
            let about:any=await About.findOne();
            console.log(about['about_content'])
            let about_list:object=[
                {
                    about_img:about? about['about_icon'] : '',
                    about_vedio:about? about['about_vedio'] : '',
                    about_id:1,
                    about_name: '公司介绍',
                    about_content:about ? about['about_content'] :'',
                    name:about ? about['name'] : '',
                },
                {
                    about_id:2,
                    about_name:'荣誉证书',
                },
                {
                    about_id:3,
                    about_name:"人才计划"
                },
                {
                    about_id:4,
                    about_name:"公司新闻"
                },
                {
                    about_id:5,
                    about_name:"企业合作"
                },
                {
                    about_id:6,
                    about_name:"技术支持",
                    about_content:about ? about['technical'] :''
                },
                {
                    about_id:7,
                    about_name:"联系我们",
                    address:about ? about['address'] : '',
                    qrcode:about ? about['qrcode'] : '',
                    record:about ? about['record'] : '',
                    email:about ? about['email'] : '',
                    phone:about ? about['phone'] : '',
                    name:about ? about['name'] : ''
                },
            ];
            return ctx.body=ctx.helper.success_result("操作成功",about_list) 
        } catch (error) {
            
        }
        ctx.body=ctx.helper.error_result("查询失败");
    }   
    //关于新闻列表接口
    /**
     * @api {get} /about/news_list 新闻列表
     * @apiName aboutNewList
     * @apiGroup Gaode
     * @apiVersion 1.0.0
     * @apiDescription 新闻列表
     * @apiParam {String} keyword  关键字查询
     * @apiParam {Number} page  页面位置
     * @apiParam {Number} page_size  页面尺寸
     * @apiSuccess {Number} code 返回状态码 0失败  200成功
     * @apiSuccess {String} message 返回状态对应提示消息
     * @apiSuccess {Object} data 查询结果数据结构
     * @apiSuccess {Object[]} data.data_info 新闻列表
     * @apiSuccess {Number} data.data_info.news_id 新闻标题
     * @apiSuccess {String} data.data_info.news_title 新闻标题
     * @apiSuccess {String} data.data_info.type 新闻类型
     * @apiSuccess {String} data.data_info.news_cover 新闻封面路径
     * @apiSuccess {String} data.data_info.news_content 新闻正文内容
     * @apiSuccess {String} data.data_info.news_abstract 新闻摘要
     * @apiSuccess {Number} data.data_info.create_time 创建时间
     * @apiSuccess {Number} data.data_info.publish_time 发布时间
     * @apiSuccess {String} data.data_count 数据总数
     * @apiSuccess {String} data.page_count 页码总数
     *
     */
    /**
     * 分页查询所有数据
     * 参数：
     *  condition 检索条件
     * 输出：
     * {Number} code 返回状态码 0失败  200成功
     * {String} message 返回状态对应提示消息
     * {Object[]} data 分类列表
     * 过程：
     *  构建分页查询条件，
     *  分页查询数据，遍历结果集处理创建时间处理password等信息，返回结果
     */
    async news_list(){
        const {ctx}=this;
        const {query}=ctx.request;
        let condition={};
        try {
            if(query.keyword){
                let keyword=query.keyword;
                condition['news_title']={[Op.like]: '%'+ keyword +'%'};
            }
            let cur_time=ctx.helper.date_format(new Date(),'yyyy/MM/dd hh:mm');
            condition['publish_time']={[Op.lte]:cur_time};
            let order_condition=[
                ['create_time', 'DESC']
            ];
            //ctx.helper.sort_order(order_condition);
            let attributes=["news_id",'news_title','type','news_cover','news_abstract','publish_time','create_time','sort']
            ctx.body=await ctx.service.common.find_and_count_all(condition,order_condition,query,'News',attributes);
        } catch (error) {
            ctx.body=ctx.helper.error_result("查询异常");
        }
    }
    //关于我们中招聘列表接口
    /**
     * @api {get} /about/hire_list 关于我们招聘列表
     * @apiName aboutHireList
     * @apiGroup Gaode
     * @apiVersion 1.0.0
     * @apiDescription 关于我们招聘列表
     * @apiParam {Number} page  页面位置
     * @apiParam {Number} page_size  页面尺寸
     * @apiSuccess {Number} code 返回状态码 0失败  200成功
     * @apiSuccess {String} message 返回状态对应提示消息
     * @apiSuccess {Object} data 查询结果数据结构
     * @apiSuccess {Object[]} data.data_info 招聘列表
     * @apiSuccess {String} data.data_info.job_name 职位名称
     * @apiSuccess {String} data.data_info.job_type 职位类型
     * @apiSuccess {String} data.data_info.job_address 工作地点
     * @apiSuccess {String} data.data_info.publish_time 发布时间
     * @apiSuccess {String} data.data_info.create_time 创建时间
     * @apiSuccess {Number} data.data_info.job_id 职位ID
     * @apiSuccess {String} data.data_info.job_requirements 岗位要求
     * @apiSuccess {String} data.data_info.job_duty 岗位职责
     * @apiSuccess {String} data.data_info.hire_phone 招聘热线
     * @apiSuccess {String} data.data_info.hire_email 邮箱
     * @apiSuccess {String} data.data_info.job_time 工作经验/年限
     * @apiSuccess {String} data.data_info.hire_education 学历
     * @apiSuccess {Number} data.data_info.hire_number 招聘数量
     * @apiSuccess {String} data.data_count 数据总数
     * @apiSuccess {String} data.page_count 页码总数
     *
     */
    /**
     * 分页查询所有数据
     * 参数：
     *  condition 检索条件
     * 输出：
     * {Number} code 返回状态码 0失败  200成功
     * {String} message 返回状态对应提示消息
     * {Object[]} data 分类列表
     * 过程：
     *  构建分页查询条件，
     *  分页查询数据，遍历结果集处理创建时间处理password等信息，返回结果
     */
    async hire_list(){
        const {ctx}=this;
        const {query}=ctx.request;
        let condition={};
        try {
            if(query.keyword){
                let keyword=query.keyword;
                condition['job_name']={[Op.like]: '%'+ keyword +'%'};
            }
            let cur_time=ctx.helper.date_format(new Date(),'yyyy/MM/dd hh:mm');
            condition['publish_time']={[Op.lte]:cur_time};
            let order_condition=[
                ['create_time', 'DESC']
            ];
            //ctx.helper.sort_order(order_condition);
            ctx.body=  await ctx.service.common.find_and_count_all(condition,order_condition,query,'Job');
        } catch (error) {
            ctx.body=ctx.helper.error_result("查询异常");
        }
    }

    //新闻详情
    /**
     * @api {get} /about/news_info 新闻详情
     * @apiName newsInfo
     * @apiGroup Gaode
     * @apiVersion 1.0.0
     * @apiDescription 新闻详情
     * @apiParam {String} news_id  职位ID
     * @apiSuccess {Number} code 返回状态码 0失败  200成功
     * @apiSuccess {String} message 返回状态对应提示消息
     * @apiSuccess {Object} data 查询结果数据结构
     * @apiSuccess {String} data.news_title 新闻标题
     * @apiSuccess {String} data.type 新闻类型
     * @apiSuccess {String} data.news_cover 新闻封面路径
     * @apiSuccess {String} data.news_content 新闻正文内容
     * @apiSuccess {String} data.news_abstract 新闻摘要
     * @apiSuccess {Number} data.create_time 创建时间
     * @apiSuccess {Number} data.publish_time 发布时间
     */
    async news_info(){
        const {ctx}=this;
        const {query}=ctx.request;
        let condition={};
        try {
            if(!query.news_id){
                return ctx.body=ctx.helper.error_result("需要指定需要查询的新闻ID")
            }
            condition['news_id']=query.news_id;
            let result=await ctx.service.common.find_one(condition,"News","news_id");
            return ctx.body=ctx.helper.success_result("查询成功",result);
        } catch (error) {
        }
        ctx.body=ctx.helper.error_result("查询异常");
    }

    /**
     * @api {get} /about/hire_info 关于我们招聘详情
     * @apiName hireInfo
     * @apiGroup Gaode
     * @apiVersion 1.0.0
     * @apiDescription 关于我们招聘详情
     * @apiParam {String} job_id  职位ID
     * @apiSuccess {Number} code 返回状态码 0失败  200成功
     * @apiSuccess {String} message 返回状态对应提示消息
     * @apiSuccess {Object} data 查询结果数据结构
     * @apiSuccess {String} data.job_name 职位名称
     * @apiSuccess {String} data.job_type 职位类型
     * @apiSuccess {String} data.job_address 工作地点
     * @apiSuccess {String} data.publish_time 发布时间
     * @apiSuccess {String} data.create_time 创建时间
     * @apiSuccess {Number} data.job_id 职位ID
     * @apiSuccess {String} data.job_requirements 岗位要求
     * @apiSuccess {String} data.job_duty 岗位职责
     * @apiSuccess {String} data.hire_phone 招聘热线
     * @apiSuccess {String} data.hire_email 邮箱
     * @apiSuccess {String} data.job_time 工作经验/年限
     * @apiSuccess {String} data.hire_education 学历
     * @apiSuccess {Number} data.hire_number 招聘数量
     *
     */
    async hire_info(){
        const {ctx}=this;
        const {query}=ctx.request;
        if(!query.job_id){
            return ctx.body=ctx.helper.error_result("未指定需要查询的职位ID");
        }
        try {
            let condition={
                job_id:query.job_id
            }
            let job=await ctx.service.common.find_one(condition,"Job","job_id");
    
            return ctx.body=ctx.helper.success_result("查询成功",job)
        } catch (error) {
        }
        return ctx.body=ctx.helper.error_result("查询失败")
        
    }
}

